非推奨の API は v2.10 以降削除されました
- まとめ
- 変更点
- TextField および関連クラスの maxLengthEnforced
- VelocityTracker コンストラクター
- DayPicker と MonthPicker
- フラットボタン、レイズドボタン、およびアウトラインボタン
- Scaffold SnackBar メソッド
- RectangularSliderTrackShape.disabledThumbGapWidth
- TextSelectionThemeData への ThemeData のテキスト選択
- RenderEditable.onSelectionChanged から TextSelectionDelegate.textEditingValue
- スタックオーバーフロー
- UpdateLiveRegionEvent
- RenderObjectElement メソッド
- タイムライン
まとめ
Flutter に準拠して、非推奨ポリシー、 以降にサポートが終了した非推奨の API 2.10 安定版リリースは削除されました。
影響を受けるすべての API はこれにコンパイルされています 移行を支援する主要な情報源。あクイックリファレンスシートも利用可能です。
変更点
このセクションでは、影響を受けるクラスごとに非推奨をリストします。
maxLengthEnforced
のTextField
& 関連クラス
Flutter Fixによるサポート: はい
maxLengthEnforced
v1.25 で非推奨になりました。
使用maxLengthEnforcement
その代わり。
どこmaxLengthEnforced
true だったので、次のように置き換えますMaxLengthEnforcement.enforce
。
どこmaxLengthEnforced
は false でした。次のように置き換えますMaxLengthEnforcement.none
。
この変更により、元のバイナリを超えてより多くの動作を指定できるようになります。
選択、追加MaxLengthEnforcement.truncateAfterCompositionEnds
として
追加オプション。
次のクラスはすべて、API に同じ変更があります。
TextField
TextFormField
CupertinoTextField
移行ガイド
移行前のコード:
const TextField textField = TextField(maxLengthEnforced: true);
const TextField textField = TextField(maxLengthEnforced: false);
final lengthEnforced = textField.maxLengthEnforced;
const TextFormField textFormField = TextFormField(maxLengthEnforced: true);
const TextFormField textFormField = TextFormField(maxLengthEnforced: false);
final lengthEnforced = textFormField.maxLengthEnforced;
const CupertinoTextField cupertinoTextField = CupertinoTextField(maxLengthEnforced: true);
const CupertinoTextField cupertinoTextField = CupertinoTextField(maxLengthEnforced: false);
final lengthEnforced = cupertinoTextField.maxLengthEnforced;
移行後のコード:
const TextField textField = TextField(maxLengthEnforcement: MaxLengthEnforcement.enforce);
const TextField textField = TextField(maxLengthEnforcement: MaxLengthEnforcement.none);
final lengthEnforced = textField.maxLengthEnforcement;
const TextFormField textFormField = TextFormField(maxLengthEnforcement: MaxLengthEnforcement.enforce);
const TextFormField textFormField = TextFormField(maxLengthEnforcement: MaxLengthEnforcement.none);
final lengthEnforced = textFormField.maxLengthEnforcement;
const CupertinoTextField cupertinoTextField = CupertinoTextField(maxLengthEnforcement: MaxLengthEnforcement.enforce);
const CupertinoTextField cupertinoTextField = CupertinoTextField(maxLengthEnforcement: MaxLengthEnforcement.none);
final lengthEnforced = cupertinoTextField.maxLengthEnforcement;
参考文献
API ドキュメント:
TextField
TextFormField
CupertinoTextField
関連する問題:
- 問題 67898
関連する PR:
- で廃止されました#68086
- に削除されました#98539
VelocityTracker
コンストラクタ
Flutter Fixによるサポート: はい
のデフォルトのコンストラクターVelocityTracker
v1.22 で非推奨になりました。
のVelocityTracker.withKind()
代わりに使用する必要があります。これにより、PointerDeviceKind
トラッカーに指定します。以前のデフォルトVelocityTracker.kind
だったPointerDeviceKind.touch
。
移行ガイド
移行前のコード:
final VelocityTracker tracker = VelocityTracker();
移行後のコード:
final VelocityTracker tracker = VelocityTracker.withKind(PointerDeviceKind.touch);
参考文献
API ドキュメント:
VelocityTracker
PointerDeviceKind
関連する PR:
- で廃止されました#66043
- に削除されました#98541
DayPicker
&MonthPicker
Flutter Fix によるサポート: いいえ
のDayPicker
とMonthPicker
ウィジェットは v1.15 で初めて非推奨になりました。
その後、v1.26 で拡張されました。
それらは 1 つの包括的なウィジェットに置き換えられました。CalendarDatePicker
。
これらのウィジェットは、showDatePicker
方法。この方法は
新しいものを提示するために移行されましたaacc9b6b-42b3-403e-afef-26da0cb866d4このリリースの前など、
最終的な削除にはさらなる措置は必要ありません。
参考文献
設計書:
API ドキュメント:
CalendarDatePicker
showDatePicker
関連する問題:
- 問題 50133
関連する PR:
- で廃止されました#50546
- に削除されました#98543
FlatButton
、RaisedButton
、&OutlineButton
Flutter Fix によるサポート: いいえ
のFlatButton
、RaisedButton
、 とOutlineButton
ウィジェットが最初でした
v1.20 で非推奨になり、v1.26 で拡張されました。
新しいボタンに置き換えられます。TextButton
、ElevatedButton
、 とOutlinedButton
。これらの新しいウィジェットは、新しい関連テーマも使用します。
一般的なButtonTheme
。
古いウィジェット | 古いテーマ | 新しいウィジェット | 新しいテーマ |
---|---|---|---|
FlatButton |
ButtonTheme |
TextButton |
TextButtonTheme |
RaisedButton |
ButtonTheme |
ElevatedButton |
ElevatedButtonTheme |
OutlineButton |
ButtonTheme |
OutlinedButton |
OutlinedButtonTheme |
移行ガイド
移行前のコード:
FlatButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
RaisedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
OutlineButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
移行後のコード:
TextButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
ElevatedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
OutlinedButton(
onPressed: onPressed,
child: Text('Button'),
// ...
);
参考文献
設計書:
API ドキュメント:
ButtonStyle
ButtonStyleButton
ElevatedButton
ElevatedButtonTheme
ElevatedButtonThemeData
OutlinedButton
OutlinedButtonTheme
OutlinedButtonThemeData
TextButton
TextButtonTheme
TextButtonThemeData
関連する PR:
- 新しいAPIが追加されました#59702
- で廃止されました#73352
- に削除されました#98546
Scaffold
SnackBar
メソッド
Flutter Fix によるサポート: いいえ
以下Scaffold
SnackBar
メソッドは v1.23 で非推奨になりました。
showSnackBar
removeCurrentSnackBar
hideCurrentSnackBar
の同じ名前のメソッドScaffoldMessenger
代わりに使用する必要があります。あ
デフォルトScaffoldMessenger
はすでにすべての場所で作成されていますMaterialApp
。
移行ガイド
移行前のコード:
Scaffold.of(context).showSnackBar(mySnackBar);
Scaffold.of(context).removeCurrentSnackBar(mySnackBar);
Scaffold.of(context).hideCurrentSnackBar(mySnackBar);
移行後のコード:
ScaffoldMessenger.of(context).showSnackBar(mySnackBar);
ScaffoldMessenger.of(context).removeCurrentSnackBar(mySnackBar);
ScaffoldMessenger.of(context).hideCurrentSnackBar(mySnackBar);
参考文献
設計書:
ビデオコンテンツ:
- スナックバーの配達
- 今週のウィジェット
API ドキュメント:
ScaffoldMessenger
SnackBar
関連する問題:
- 問題 57218
- 問題 62921
関連する PR:
- 新しいAPIが追加されました#64101
- で廃止されました#67947
- に削除されました#98549
RectangularSliderTrackShape.disabledThumbGapWidth
Flutter Fixによるサポート: はい
のRectangularSliderTrackShape.disabledThumbGapWidth
最初に非推奨になったのは
v1.5 に続き、v1.26 で拡張されました。
これは、スライダーのサムのアニメーションとしてフレームワークでは使用されなくなりました。 無効にすると発生しなくなりました。
移行ガイド
移行前のコード:
RectangularSliderTrackShape(disabledThumbGapWidth: 2.0);
移行後のコード:
RectangularSliderTrackShape();
参考文献
API ドキュメント:
RectangularSliderTrackShape
関連する PR:
- アニメーションが変更されました#30390
- で廃止されました#65246
- に削除されました#98613
ThemeData
にTextSelectionThemeData
テキストの選択Flutter Fixによるサポート: はい
以下ThemeData
メンバーは v1.23 で最初に非推奨になり、拡張されました
v1.26では。
useTextSelectionTheme
textSelectionColor
cursorColor
textSelectionHandleColor
これらは、より包括的なものに置き換えられるべきです。TextSelectionThemeData
、
これは現在で指定されていますThemeData
自体。
のuseTextSelectionTheme
フラグは、への一時的な移行フラグとして機能しました
2 つの API を区別するため、これで削除できます。
移行ガイド
移行前のコード:
ThemeData(
useTextSelectionTheme: false,
textSelectionColor: Colors.blue,
cursorColor: Colors.green,
textSelectionHandleColor: Colors.red,
);
移行後のコード:
ThemeData(
textSelectionTheme: TextSelectionThemeData(
selectionColor: Colors.blue,
cursorColor: Colors.green,
selectionHandleColor: Colors.red,
),
);
参考文献
設計書:
API ドキュメント:
ThemeData
TextSelectionThemeData
関連する問題:
- 問題 17635
- 問題 56082
- 問題 61227
関連する PR:
- 新しいAPIが追加されました#62014
- で廃止されました#66485
- に削除されました#98578
RenderEditable.onSelectionChanged
にTextSelectionDelegate.textEditingValue
Flutter Fix によるサポート: いいえ
RenderEditable.onSelectionChanged
とTextSelectionDelegate.textEditingValue
v1.26 で非推奨になりました。
これらのメソッドの一方または両方を呼び出す代わりに、TextSelectionDelegate.userUpdateTextEditingValue
。これにより、次のようなバグが修正されました。TextInputFormatter
間違った選択値を受け取ることになります。
移行ガイド
移行前のコード:
renderEditable.onSelectionChanged(selection, renderObject, cause);
textSelectionDelegate.textEditingValue = value;
移行後のコード:
textSelectionDelegate.userUpdateTextEditingValue(value, cause);
参考文献
API ドキュメント:
RenderEditable
TextSelectionDelegate
関連する問題:
- 解決済み#75505
関連する PR:
- で廃止されました#75541
- に削除されました#98582
Stack.overflow
Flutter Fixによるサポート: はい
Stack.overflow
、同様にOverflow
enum は v1.22 で非推奨になりました。
交換品は、Stack.clipBehavior
、クリップの統合の一部として行われた変更
フレームワーク全体の動作とセマンティクス。どこOverflow.visible
使われた、
使用Clip.none
。どこOverflow.clip
使用されました、使用してくださいClip.hardEdge
。
移行ガイド
移行前のコード:
const Stack stack = Stack(overflow: Overflow.visible);
const Stack stack = Stack(overflow: Overflow.clip);
移行後のコード:
const Stack stack = Stack(clipBehavior: Clip.none);
const Stack stack = Stack(clipBehavior: Clip.hardEdge);
参考文献
API ドキュメント:
Stack
Clip
関連する問題:
- 解決済み#66030
関連する PR:
- で廃止されました#66305
- に削除されました#98583
UpdateLiveRegionEvent
Flutter Fix によるサポート: いいえ
のSemanticsEvent
UpdateLiveRegionEvent
、v1.12で初めて非推奨になりました。
その後、v1.26 で拡張されました。
これはフレームワークによって実装されていないため、参照はすべて次のようにする必要があります。 削除されました。
参考文献
API ドキュメント:
SemanticsEvent
関連する PR:
- で廃止されました#45940
- に削除されました#98615
RenderObjectElement
メソッド
Flutter Fixによるサポート: はい
以下RenderObjectElement
メソッドは v1.21 で非推奨になりました。
insertChildRenderObject
moveChildRenderObject
removeChildRenderObject
これらのメソッドは、それぞれ次のように置き換えられます。
insertRenderObjectChild
moveRenderObjectChild
removeRenderObjectChild
これらの変更は、 関数のシグネチャ。
移行ガイド
移行前のコード:
element.insertChildRenderObject(child, slot);
element.moveChildRenderObject(child, slot);
element.removeChildRenderObject(child);
移行後のコード:
element.insertRenderObjectChild(child, slot);
element.moveRenderObjectChild(child, oldSlot, newSlot);
element.removeRenderObjectChild(child, slot);
参考文献
API ドキュメント:
RenderObjectElement
関連する問題:
- 問題 63269
関連する PR:
- で廃止されました#64254
- に削除されました#98616
タイムライン
安定版リリース: 3.0.0